﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Skauler.Model
{
    public class Employee : INotifyPropertyChanged
    {
         public event PropertyChangedEventHandler PropertyChanged;

         string empno;
         string fname;
         string mname;
         string lname;
         string email;
         string gender;
         string department;
        List<string> _department;
         string category;
        List<string> _category;
         string position;
        List<string> _position;
         string jobtitle;
        List<string> _jobtitle;
         string qualification;
        List<string> _qualification;
         string totalexp;
        List<string> _totalexp;
         string status;
        DateTime joindt;
        DateTime dobdt;

        public string Empno
        {
            get
            {
                return empno;
            }
            set
            {
                if (empno != value)
                {
                    empno = value;
                    OnPropertyChanged("Empno");
                }
            }
        }

        public string Fname
        {
            get { return fname; }
            set
            {
                if (fname != value)
                {
                    fname = value;
                    OnPropertyChanged("Fname");
                }
            }
        }

        public string Mname
        {
            get { return mname; }
            set
            {
                if (mname != value)
                {
                    mname = value;
                    OnPropertyChanged("Mname");
                }
            }
        }

        public string Lname
        {
            get { return lname; }
            set
            {
                if (lname != value)
                {
                    lname = value;
                    OnPropertyChanged("Lname");
                }
            }
        }

        public string Email
        {
            get { return email; }
            set
            {
                if (email != value)
                {
                    email = value;
                    OnPropertyChanged("Email");
                }
            }
        }

        public string Gender
        {
            get { return gender; }
            set
            {
                if (gender != value)
                {
                    gender = value;
                    OnPropertyChanged("Gender");
                }
            }
        }

        public List<string> Dept
        {
            get { return _department; }
        }

        public string Department
        {
            get { return department; }
            set
            {
                if (department != value)
                {
                    department = value;
                    OnPropertyChanged("Department");
                }
            }
        }

        public List<string> Categ
        {
            get { return _category; }
        }

        public string Category
        {
            get { return category; }
            set
            {
                if (category != value)
                {
                    category = value;
                    OnPropertyChanged("Category");
                }
            }
        }

        public List<string> Pos
        {
            get { return _position; }
        }

        public string Position
        {
            get { return position; }
            set
            {
                if (position != value)
                {
                    position = value;
                    OnPropertyChanged("Position");
                }
            }
        }

        public List<string> Jobtit
        {
            get { return _jobtitle; }
        }

        public string Jobtitle
        {
            get { return jobtitle; }
            set
            {
                if (jobtitle != value)
                {
                    jobtitle = value;
                    OnPropertyChanged("Jobtitle");
                }
            }
        }

        public List<string> Quali
        {
            get { return _qualification; }
        }

        public string Qualification
        {
            get { return qualification; }
            set
            {
                if (qualification != value)
                {
                    qualification = value;
                    OnPropertyChanged("Qualification");
                }
            }
        }

        public List<string> Totexp
        {
            get { return _totalexp; }
        }

        public string Totalexp
        {
            get { return totalexp; }
            set
            {
                if (totalexp != value)
                {
                    totalexp = value;
                    OnPropertyChanged("Totalexp");
                }
            }
        }

        public string Status
        {
            get { return status; }
            set
            {
                if (status != value)
                {
                    status = value;
                    OnPropertyChanged("Status");
                }
            }
        }

        public DateTime Joindate
        {
            get { return joindt; }
            set
            {
                if (joindt != value)
                {
                    joindt = value;
                    OnPropertyChanged("Joindate");
                }
            }
        }

        public DateTime Dobdt
        {
            get { return dobdt; }
            set
            {
                if (dobdt != value)
                {
                    dobdt = value;
                    OnPropertyChanged("Dobdt");
                }
            }
        }

        public Employee()
        {
            joindt = DateTime.Now;
            dobdt = DateTime.Now;
            _department = new List<string>();
            _department.Add("Management");
            _department.Add("Technical");
            _department.Add("Non-technical");
            _department.Add("Administration");
            _department.Add("Accounts");

            _category = new List<string>();
            _category.Add("Essential");
            _category.Add("Intern");
            _category.Add("Permanent");
            _category.Add("Exempt");
            _category.Add("Non Exempt");

            _position = new List<string>();
            _position.Add("Staff member");
            _position.Add("Entry level management");
            _position.Add("Executive management");
            _position.Add("Contractors");

            _jobtitle = new List<string>();
            _jobtitle.Add("Director");
            _jobtitle.Add("Manager");
            _jobtitle.Add("Accountant");
            _jobtitle.Add("Analyst");
            _jobtitle.Add("Supervisor");
            _jobtitle.Add("Representative");
            _jobtitle.Add("Marketing Executive");
            _jobtitle.Add("Developer");
            _jobtitle.Add("Financial Planner");

            _qualification = new List<string>();
            _qualification.Add("10+2");
            _qualification.Add("Graduate");
            _qualification.Add("Post Graduate");


            _totalexp = new List<string>();
            _totalexp.Add("0-1year");
            _totalexp.Add("1-2year");
            _totalexp.Add("3-4year");
            _totalexp.Add("4-5year");
            _totalexp.Add("More than 5 years");
        }
        protected void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }
}
}
